Dr. Chan, Chun-Hsiang
Department of Geography, National Taiwan Normal University
# import packages
import os
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from bs4 import BeautifulSoup
import time
# set parameters
url = 'https://rent.591.com.tw/'
# start a webdriver
browser = webdriver.Chrome()
# enter url
browser.get(url)
# fetch the textbox for searching a location
searchTextBox = browser.find_element(By.CSS_SELECTOR, "input[class*='searchInput form-control']")
# send the searching criteria "師大"
searchTextBox.send_keys('師大')
# fetch the dropdown list
dropDownList_Search = browser.find_elements(By.CSS_SELECTOR, "ul[class*='search-input-list dropdown-menu']")[1]
# fetch the dropdown list info. and print them out
whole_list = dropDownList_Search.find_elements(By.CSS_SELECTOR, "li")
for i in range(len(whole_list)):
# index to the specific item from the dropdown list
tmp_list = whole_list[i]
# fetch the location data
house_district_info = tmp_list.find_element(By.CSS_SELECTOR, "div[class='kwordsLeft']").text
# split by space and fetch the zero-index info. => apartment info
house_info = house_district_info.split(' ')[0]
# split by space and fetch the one-index info. => district info
district_info = house_district_info.split(' ')[1]
# fetch the number of available items
num_available = tmp_list.find_element(By.CSS_SELECTOR, "span[class='kwordsRight']").text
# delete the space and fetch the number of available items
num_available = num_available.replace(' ', '')
# print all info
print(house_info+'('+district_info+'): '+num_available)
師大路師大金棧(大安區): 約2間 師大隱大樓(大安區): 約1間 大師大(大安區): 約23間 師大麗水(大安區): 約9間 師大金棧(大安區): 約2間 師大金冠(大安區): 約1間 華豐師大名廈(大安區): 約1間
# select 大師大(大安區): 約26間
whole_list[2].click()
# click the SEARCH button
browser.find_element(By.CSS_SELECTOR, "div[data-gtm-stat='新版租屋列表頁_搜尋_搜尋']").click()
# clean the searching textbox
searchTextBox.clear()
# send a blank (space) to the searching textbox
searchTextBox.send_keys(' ')
# fetch the dropdown list info. and print them out
whole_list = dropDownList_Search.find_elements(By.CSS_SELECTOR, "li")
for i in range(len(whole_list)):
# index to the specific item from the dropdown list
tmp_list = whole_list[i]
# fetch the location data
house_district_info = tmp_list.find_element(By.CSS_SELECTOR, "div[class='kwordsLeft']").text
# split by space and fetch the one-index info. => district info
district_info = house_district_info.split(' ')[0]
# fetch the number of available items
num_available = tmp_list.find_element(By.CSS_SELECTOR, "span[class='kwordsRight']").text
# delete the space and fetch the number of available items
num_available = num_available.replace(' ', '')
# print all info
print(district_info+': '+num_available)
中山區: 約1961間 大安區: 約1637間 信義區: 約1525間 士林區: 約1235間 內湖區: 約1145間 中正區: 約808間 松山區: 約790間 大同區: 約633間 萬華區: 約601間 北投區: 約578間
# click on "大安區"
whole_list[1].click()
# click the SEARCH button
browser.find_element(By.CSS_SELECTOR, "div[data-gtm-stat='新版租屋列表頁_搜尋_搜尋']").click()
# create an empty list
filter_info = []
# get all conditional filters
for index in range(5):
# wait a moment
time.sleep(1)
# fetch conditional filter info
tmp_info = browser.find_elements(By.CSS_SELECTOR, "ul[class*='vue-filter-content']")[index].text
# print conditional filter info
print(index, '-->', tmp_info)
# save conditional filter info
filter_info.append(tmp_info)
# show conditional filter info
filter_info
0 --> 按鄉鎮 按捷運 按學校 按商圈 清空條件 保存搜尋 1 --> 不限 整層住家 獨立套房 分租套房 雅房 車位 其他 2 --> 不限 5000元以下 5000-10000元 10000-20000元 20000-30000元 30000-40000元 40000元以上 - 元 3 --> 不限 1房 2房 3房 4房以上 4 --> 不限 新上架 近捷運 可養寵物 可開伙 有車位 有電梯 有陽台 可短期租賃
['按鄉鎮 按捷運 按學校 按商圈\n清空條件\n保存搜尋', '不限 整層住家 獨立套房 分租套房 雅房 車位 其他', '不限 5000元以下 5000-10000元 10000-20000元 20000-30000元 30000-40000元 40000元以上\n- 元', '不限 1房 2房 3房 4房以上', '不限 新上架 近捷運 可養寵物 可開伙 有車位 有電梯 有陽台 可短期租賃']
# wish_district => 大安區
wish_district = browser.find_elements(By.CSS_SELECTOR,
"ul[class*='town-list clearfix']>li[class*='vue-filter-item']")[2]
print(wish_district.text)
# checked
wish_district.find_elements(By.CSS_SELECTOR, "i[class='fa fa-check']")[0].click()
大安區
# wish_type => 整層住家
wish_type = browser.find_elements(By.CSS_SELECTOR,
"ul[class*='vue-filter-content']>li[class*='vue-filter-item']")[1]
print(wish_type.text)
# checked
wish_type.click()
整層住家
# wish_type => 20000-30000元
wish_price = browser.find_elements(By.CSS_SELECTOR, "ul[class*='vue-filter-content']")[2]
print(wish_price.text)
# checked
wish_price.click()
不限 5000元以下 5000-10000元 10000-20000元 20000-30000元 30000-40000元 40000元以上 - 元
# wish_room => 2房 or 3房
wish_room = browser.find_elements(By.CSS_SELECTOR, "ul[class*='vue-filter-content']")[3]
print(wish_room.text)
wish_room1 = wish_room.find_elements(By.CSS_SELECTOR, "li[class='vue-filter-item']")[1]
print(wish_room1.text)
wish_room2 = wish_room.find_elements(By.CSS_SELECTOR, "li[class='vue-filter-item']")[2]
print(wish_room2.text)
# checked
wish_room1.click()
time.sleep(2)
wish_room2.click()
time.sleep(2)
不限 1房 2房 3房 4房以上 2房 3房
wish_condition = browser.find_elements(By.CSS_SELECTOR, "ul[class*='vue-filter-content']")[4]
print(wish_condition.text)
wish_condition_ = wish_condition.find_elements(By.CSS_SELECTOR, "li[class='vue-filter-item']")[3]
print(wish_condition_.text)
time.sleep(2)
wish_condition.click()
不限 新上架 近捷運 可養寵物 可開伙 有車位 有電梯 有陽台 可短期租賃 可開伙
# fetch all list info
list_info_ = browser.find_elements(By.CSS_SELECTOR, "section[class*='vue-list-rent-item']")
# get data
for idx_list in range(len(list_ls)):
# fetch title info
print('======= #'+str(idx_list)+"- list =======")
item_title = list_info_[idx_list].find_element(By.CSS_SELECTOR, "div[class='item-title']").text
print(item_title)
# fetch tag info
item_tags = list_info_[idx_list].find_element(By.CSS_SELECTOR, "ul[class='item-tags']").text
item_tags = item_tags.split(' ')
print(item_tags)
# fetch style info
item_style = list_info_[idx_list].find_element(By.CSS_SELECTOR, "ul[class='item-style']").text
item_style = item_style.split(' ')
print(item_style)
# fetch area info
item_area = list_info_[idx_list].find_element(By.CSS_SELECTOR, "div[class='item-area']").text
item_area = item_area.split(' ')
print(item_area)
# fetch public transportation info
try:
item_tip_subway = list_info_[idx_list].find_element(By.CSS_SELECTOR, "div[class='item-tip subway']").text
print(item_tip_subway)
except:
item_tip_bus = list_info_[idx_list].find_element(By.CSS_SELECTOR, "div[class='item-tip bus']").text
print(item_tip_bus)
# fetch message info (identity, agent, last update, and number of views)
item_msg = list_info_[idx_list].find_element(By.CSS_SELECTOR, "div[class='item-msg']").text
item_msg = item_msg.split(' ')
print(item_msg)
time.sleep(1)
======= #0- list ======= *通化街靜巷明亮美寓*~住商儀居小紀 ['近捷運', '隨時可遷入', '可開伙', '可養寵物', '有車位', '免管理費'] ['整層住家', '2房1廳', '16坪', '頂樓加蓋/5F'] ['通化街公寓', '大安區-通化街175巷10弄'] 距六張犁站 358公尺 ['仲介', '紀冠群', '17天前更新', '昨日140人瀏覽'] ======= #1- list ======= 龍門國中大安森林公園中國文化大學 ['屋主直租', '近捷運', '拎包入住', '隨時可遷入', '可開伙', '免管理費'] ['整層住家', '2房1廳', '15坪', '2F/4F'] ['大安區-和平東路二段'] 距科技大樓站 491公尺 ['屋主', '丁小姐', '16分鐘內更新', '昨日145人瀏覽'] ======= #2- list ======= Cozy六張犛站歐風俏麗2房1廳4樓頂加 優選好屋 ['屋主直租', '近捷運', '拎包入住', '近商圈', '隨時可遷入', '可開伙'] ['整層住家', '2房1廳', '23坪', '5F/5F'] ['大安區-基隆路二段159巷'] 距六張犁站 147公尺 ['屋主', '鄭小姐', '16分鐘內更新', '昨日204人瀏覽'] ======= #3- list ======= 台電大樓站.低樓層.獨立陽台.兩房一廳 優選好屋 ['近捷運', '拎包入住', '近商圈', '隨時可遷入', '可開伙'] ['整層住家', '2房1廳', '18坪', '2F/5F'] ['大安區-雲和街'] 距台電大樓站 394公尺 ['代理人', '曾小姐', '16分鐘內更新', '昨日111人瀏覽'] ======= #4- list ======= 生活機能極佳、交通便利 ['屋主直租', '近捷運', '新上架', '拎包入住', '近商圈', '隨時可遷入'] ['整層住家', '2房1廳', '25坪', '頂樓加蓋/4F'] ['大安區-信義路四段265巷21弄'] 距信義安和站 221公尺 ['屋主', '關小姐', '16分鐘內更新', '昨日186人瀏覽'] ======= #5- list ======= 古亭捷運/台電大樓捷運/兩房/可養寵物 ['近捷運', '拎包入住', '近商圈', '隨時可遷入', '可開伙', '可養寵物'] ['整層住家', '2房1廳', '12坪', '頂樓加蓋/4F'] ['大安區-羅斯福路三段'] 距古亭站 365公尺 ['仲介', '劉小姐', '3小時內更新', '昨日79人瀏覽'] ======= #6- list ======= 近臨江夜市,二樓整層(三房兩廳兩衛)出租 優選好屋 ['屋主直租', '近捷運', '新上架', '拎包入住', '隨時可遷入', '可開伙'] ['整層住家', '3房2廳', '33坪', '2F/3F'] ['大安區-通化街39巷62弄'] 距信義安和站 483公尺 ['屋主', '吳太太', '3小時內更新', '昨日144人瀏覽'] ======= #7- list ======= 信義安和、租補、新裝潢 ['近捷運', '拎包入住', '近商圈', '隨時可遷入', '可開伙'] ['整層住家', '2房1廳', '18坪', '5F/5F'] ['@970lvjys', '大安區-通化街140巷'] 距六張犁站 499公尺 ['仲介', '高先生', '3小時內更新', '昨日58人瀏覽'] ======= #8- list ======= 全新裝潢信義安和獨立陽台兩房可寵 優選好屋 ['近捷運', '新上架', '拎包入住', '近商圈', '隨時可遷入', '可開伙'] ['整層住家', '2房1廳', '15坪', '3F/4F'] ['大安區-臨江街'] 距信義安和站 439公尺 ['仲介', '沈先生', '3小時內更新', '昨日65人瀏覽'] ======= #9- list ======= 信義安和,臨江夜市,新裝修1+1房,獨洗 優選好屋 ['近捷運', '新上架', '拎包入住', '近商圈', '隨時可遷入', '可開伙'] ['整層住家', '2房1廳', '15坪', '3F/3F'] ['大安區-光復南路692巷4弄'] 距信義安和站 511公尺 ['仲介', '顏小姐', '7小時內更新', '昨日64人瀏覽'] ======= #10- list ======= 信義安和,臨江夜市,新裝修1+1房,通風 優選好屋 ['近捷運', '新上架', '拎包入住', '隨時可遷入', '可開伙'] ['整層住家', '2房1廳', '15坪', '3F/3F'] ['大安區-光復南路692巷4弄'] 距信義安和站 511公尺 ['仲介', '潘先生', '3小時內更新', '昨日5人瀏覽'] ======= #11- list ======= 麟光站、三房、機能好、採光通風、天然氣 ['近捷運', '近商圈', '隨時可遷入', '可開伙'] ['整層住家', '3房1廳', '20.6坪', '4F/5F'] ['大安區-和平東路三段'] 距麟光站 234公尺 ['仲介', '林先生', '9小時內更新', '昨日36人瀏覽'] ======= #12- list ======= 泰順雅寓2房 ['近捷運', '拎包入住', '隨時可遷入', '可開伙'] ['整層住家', '2房1廳', '17坪', '3F/4F'] ['大安區-泰順街44巷'] 距台電大樓站 413公尺 ['代理人', '陳先生', '11小時內更新', '昨日12人瀏覽'] ======= #13- list ======= 超值電梯1+1房🌵東門&大安森林公園站 ['近捷運', '近商圈', '有電梯', '可開伙'] ['整層住家', '2房2廳', '13.7坪', '5F/6F'] ['大安區-信義路二段198巷'] 距東門站 507公尺 ['仲介', '吳小姐', '14小時內更新', '昨日103人瀏覽'] ======= #14- list ======= SOGO美兩房♥️租補♥️雙捷運♥️快約 ['影片賞屋', '近捷運', '拎包入住', '近商圈', '隨時可遷入', '可開伙'] ['整層住家', '2房1廳', '13坪', '4F/4F'] ['大安區-敦化南路一段160巷'] 距忠孝敦化站 378公尺 ['仲介', '陳先生', '15小時內更新', '昨日62人瀏覽'] ======= #15- list ======= 信義安和站,機能強,新裝潢,東區 優選好屋 ['近捷運', '新上架', '拎包入住', '近商圈', '隨時可遷入', '可開伙'] ['整層住家', '2房1廳', '25.5坪', '頂樓加蓋/4F'] ['大安區-信義路四段265巷21弄'] 距信義安和站 230公尺 ['仲介', '江先生', '16小時內更新', '昨日22人瀏覽'] ======= #16- list ======= 真正✨東門&大安森林公園站✨電梯1+1房 ['近捷運', '近商圈', '有電梯', '隨時可遷入', '可開伙'] ['整層住家', '2房2廳', '13.7坪', '5F/6F'] ['大安區-信義路二段198巷'] 距東門站 507公尺 ['仲介', '高先生', '16小時內更新', '昨日70人瀏覽'] ======= #17- list ======= 鉑斯✨東門&大安森林公園站✨電梯1+1房 優選好屋 ['近捷運', '新上架', '近商圈', '有電梯', '隨時可遷入', '可開伙'] ['整層住家', '2房2廳', '13.7坪', '5F/6F'] ['大安區-信義路二段198巷'] 距東門站 507公尺 ['仲介', '值班人員', '16小時內更新', '昨日70人瀏覽'] ======= #18- list ======= 麟光站,雙陽台,採光佳,新裝潢,秒殺 優選好屋 ['近捷運', '拎包入住', '近商圈', '隨時可遷入', '可開伙'] ['整層住家', '3房1廳', '24.4坪', '3F/4F'] ['大安區-富陽街158巷'] 距麟光站 212公尺 ['仲介', '江先生', '17小時內更新', '昨日44人瀏覽'] ======= #19- list ======= 信義安和❤️六張犁⭐️大空間❤️寵可談 ['近捷運', '近商圈', '隨時可遷入', '可開伙', '可養寵物'] ['整層住家', '3房1廳', '32坪', '3F/4F'] ['@vv6688', '大安區-通化街'] 距信義安和站 420公尺 ['仲介', '吳小姐', '17小時內更新', '昨日73人瀏覽'] ======= #20- list ======= 科技大樓、大安森林公園✨新裝潢陽台大套房 優選好屋 ['近捷運', '新上架', '拎包入住', '近商圈', '可開伙'] ['整層住家', '2房1廳', '6坪', '3F/4F'] ['大安區-瑞安街208巷14弄'] 距科技大樓站 419公尺 ['仲介', '田小姐', '17小時內更新', '昨日47人瀏覽'] ======= #21- list ======= 大安站電梯2+1房/大露台使用/天然瓦斯 ['近捷運', '近商圈', '有電梯', '隨時可遷入', '可開伙'] ['整層住家', '2房1廳', '20坪', '頂樓加蓋/15F'] ['景德大廈', '大安區-復興南路一段'] 距大安站 466公尺 ['仲介', '郭先生', '17小時內更新', '昨日120人瀏覽'] ======= #22- list ======= 免仲介費,近世貿站信義安和站2房1廳1衛 優選好屋 ['近捷運', '新上架', '拎包入住', '近商圈', '隨時可遷入', '可開伙'] ['整層住家', '2房1廳', '15坪', '3F/3F'] ['大安區-光復南路692巷4弄'] 距信義安和站 511公尺 ['代理人', '劉先生', '19小時內更新', '昨日42人瀏覽'] ======= #23- list ======= 仲介勿擾,台大公寓3房1衛出租 ['屋主直租', '近捷運', '可開伙', '有車位'] ['整層住家', '3房0廳', '20坪', '3F/4F'] ['大安區-羅斯福路三段333巷'] 距公館站 293公尺 ['屋主', '劉先生', '21小時內更新', '昨日55人瀏覽'] ======= #24- list ======= 信義安和、101捷運、商圈,靜巷2房 ['近捷運', '拎包入住', '近商圈', '隨時可遷入', '可開伙'] ['整層住家', '2房2廳', '23坪', '4F/4F'] ['大安區-臨江街2巷'] 距信義安和站 587公尺 ['仲介', '陳小姐', '2天前更新', '昨日47人瀏覽'] ======= #25- list ======= 泰順街靜巷2房鼎家 ['新上架', '拎包入住', '隨時可遷入', '可開伙', '南北通透', '免管理費'] ['整層住家', '2房1廳', '20坪', '5F/5F'] ['泰順街26巷', '大安區-泰順街26巷29號'] 距師大綜合大樓 133公尺 ['仲介', '游先生', '3天前更新', '昨日72人瀏覽'] ======= #26- list ======= 好宅包租代管【可租補】公園旁(新裝修中) ['近捷運', '新上架', '可開伙'] ['整層住家', '2房1廳', '14.6坪', '3F/4F'] ['大安區-和平東路三段308巷1弄6號'] 距麟光站 303公尺 ['仲介', '林先生', '3天前更新', '昨日54人瀏覽'] ======= #27- list ======= 好宅社宅可租補/大兩房/公園旁(裝修中) ['近捷運', '新上架', '可開伙', '免服務費'] ['整層住家', '2房1廳', '14.6坪', '3F/4F'] ['大安區-和平東路三段30巷1弄6號'] 距六張犁站 499公尺 ['仲介', '林先生', '3天前更新', '昨日45人瀏覽'] ======= #28- list ======= 捷運古亭走路3分鐘/生活機能佳/頂加2房 優選好屋 ['近捷運', '新上架', '近商圈', '隨時可遷入', '可開伙'] ['整層住家', '2房1廳', '22.2坪', '5F/5F'] ['大安區-羅斯福路二段81弄5號'] 距古亭站 129公尺 ['仲介', '陳先生', '4天前更新', '昨日56人瀏覽'] ======= #29- list ======= 頂加2房新翻修大客廳近六張犁站 優選好屋 ['近捷運', '新上架', '拎包入住', '隨時可遷入', '可開伙'] ['整層住家', '2房1廳', '21坪', '頂樓加蓋/4F'] ['六張犁頂加大兩房', '大安區-和平東路三段228巷'] 距六張犁站 225公尺 ['仲介', '賴小姐', '6天前更新', '昨日55人瀏覽']